{res.send("HelloWorld!");});回调函数将请求和响应对" />

Express/Node 入门

您所在的位置:网站首页 node 日志模块 Express/Node 入门

Express/Node 入门

2023-09-19 18:40| 来源: 网络整理| 查看: 265

上文的 Hello World 示例中定义了一个(回调)路由处理函数来处理对站点根目录('/')的 HTTP GET 请求。

js

app.get("/", (req, res) => { res.send("Hello World!"); });

回调函数将请求和响应对象作为参数。该函数直接调用响应的 send() 以返回字符串“Hello World!”。有 许多其他响应方法 可以结束请求/响应周期,例如,通过调用 res.json() 来发送 JSON 响应、调用 res.sendFile() 来发送文件。

备注: 虽然回调函数的参数命名没有限制,但是当调用回调时,第一个参数将始终是请求,第二个参数将始终是响应。合理的命名它们,在回调体中使用的对象将更容易识别。

Express 应用对象还提供了为其他所有 HTTP 动词定义路由处理器的方法,大多数处理器的使用方式完全一致:

checkout(), copy(), delete(), get(), head(), lock(), merge(), mkactivity(), mkcol(), move(), m-search(), notify(), options(), patch(), post(), purge(), put(), report(), search(), subscribe(), trace(), unlock(), unsubscribe().

有一个特殊的路由方法 app.all(),它可以在响应任意 HTTP 方法时调用。用于在特定路径上为所有请求方法加载中间件函数。以下示例(来自 Express 文档)中的处理程序将在监听到针对 /secret 的任意 HTTP 动词(只要 HTTP 模块 支持)的请求后执行。

js

app.all("/secret", (req, res, next) => { console.log("访问私有文件 ..."); next(); // 控制权传递给下一个处理器 });

路由器可以匹配 URL 中特定的字符串模式,并从 URL 中提取一些值作为参数传递给路由处理程序(作为请求对象的属性)。

可以为站点的特定部分提供一组路由处理器(使用公共路由前缀进行组合)。(比如对于一个有 维基(Wiki)内容的站点,可以把所有 Wiki 相关的路由放在同一个文件里,使用路由前缀 *'/wiki/' *访问它们)。在 Express 中可以使用 express.Router 对象实现。例如,可以把所有维基相关的路由都放在一个 wiki.js 模块中,然后导出 Router 对象,如下:

js

// wiki.js - 维基路由模块 const express = require("express"); const router = express.Router(); // 首页路由 router.get("/", (req, res) => { res.send("维基首页"); }); // “关于”页面路由 router.get("/about", (req, res) => { res.send("关于此维基"); }); module.exports = router;

备注: 向 Router 对象添加路由就像向之前为 app 对象添加路由一样。

首先 require() 路由模块(wiki.js),然后在 Express 应用中调用 use() 把 Router 添加到中间件处理路径中,就可以在主应用中使用这个模块中的路由处理器了。路由路径有两条:/wiki 和 /wiki/about/。

js

const wiki = require("./wiki.js"); // ... app.use("/wiki", wiki);

今后将介绍更多关于路由的信息,特别是关于 Router 的用法,请参见 路由和控制器 一节。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3